package com.yzy.baselibrary.http.response

/**
 *description: 带有数据加载状态的data.
 *@date 2018/10/17 15:30.
 *@author: YinZeYu.
 */
sealed class StatusData<out T> {
  /**
   * 请求开始
   */
  class Start<out T> : StatusData<T>()

  /**
   * 请求结束不管成功失败
   */
  class Complete<out T> : StatusData<T>()

  /**
   * 请求成功
   */
  data class Success<out T>(val data: T?) : StatusData<T>()

  /**
   * 请求成功但是数据或者列表为空
   */
  class Empty<out T> : StatusData<T>()

  /**
   * 请求失败，无论哪种失败都会返回
   */
  data class Failure<out T>(val throwable: Throwable) : StatusData<T>()

  /**
   * 请求失败，网络问题
   */
  class NetWorkException<out T> : StatusData<T>()

  /**
   * 服务器返回的请求失败
   */
  class ServeException<out T>(val code: Int, val msg: String?,val fields: Map<String, Any>? = null) : StatusData<T>()


}